<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

  <script>
    // 中断函数执行：1.return  2.throw new Error('异常了')  3.yield (暂时性的中断)
    let promise1 = new Promise((resolve, reject) => {
      setTimeout(() => {
        resolve("123")
      }, 3000)
    })
    let promise = new Promise((resolve, reject) => {
      resolve('bbb')
    })

    // promise.then((res) => { }).catch((err) => { })
    // // 1  .then的返回值就是一个promise
    // // 2   .catch的返回值也是一个promise对象  promise的reject会找到最近的一个catch执行
    // promise.then((res) => {
    //   // return 'aaa'
    //   return promise1
    // }).then(res => {
    //   // 这里是否决议为 成功或失败由上一个then返回的promise的决议决定
    // })

    promise.then((res) => {
      console.log("第一个执行", res);
    }).then((res) => {
      console.log("第二个执行", res);

    }).then((res) => {
      console.log("第三个执行", res);
      throw new Error('在第三个这里抛出了异常,抛出异常就要及时catch否则就会报错')
    }).then((res) => {
      console.log("第四个执行", res);
    }).catch(err => {
      // catch是就近原则
      console.log(err);
    })

    // finally无论是fulfiled还是rejected都会执行


  </script>

</body>

</html>